Java 静态代码块与构造方法的执行顺序(子类与父类) |
您所在的位置:网站首页 › java static静态代码块 › Java 静态代码块与构造方法的执行顺序(子类与父类) |
Java 静态代码块与构造方法的执行顺序(子类与父类)
原创
CSDN深海呐 2023-03-10 21:52:36 博主文章分类:Java ©著作权 文章标签 静态代码块和构造方法的执行顺序 静态代码块与构造方法的执行顺序 静态代码块 Java 执行顺序 Java代码块和方法的执行顺序 文章分类 深度学习 人工智能 ©著作权归作者所有:来自51CTO博客作者CSDN深海呐的原创作品,请联系作者获取转载授权,否则将追究法律责任最新整理代码的时候,发现好几年前的一个小测试单元,一起看一下吧 public class Text { public static void main(String[] args) { new AA(); } static class AA extends BB { static { System.out.println("1"); } public AA() { System.out.println("2"); } } static class BB { static { System.out.println("3"); } public BB() { System.out.println("4"); } }AA继承了父类BB,然后各自有自己的静态代码块,各自的构造方法,分别执行各自的打印 你们猜最后的执行顺序是什么? 哈哈 一起看一下执行结果吧! 3 1 4 2怎么样 ?惊喜不惊喜!意外不意外! 结果是:静态代码块(父)→静态代码块(子)→构造方法(父)→构造方法(子) 其实你仔细想一下就明白这个顺序的道理了 深海个人认为: 系统设计这个顺序的原因有二:第一,静态代码块的执行,有点像静态属性,它本身可能作为其他方法的影响资源,所以在其他方法执行前, 必须要先执行其资源影响,这就好比古时候打仗一样,兵马未动,粮草先行。哈哈这个比喻不错吧。 第二,父类的静态代码块与方法优先级高于子类,这个是因为父类的初始化会有可能影响子类的逻辑, 并且它有可能是一对多的影响关系,所以父类会优先执行。 赞 收藏 评论 分享 举报 上一篇:算法探索_两数之和 下一篇:Android AlertDialog 抢焦点的问题 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |